Ensure get_dom_domid() terminates even when /local/domain/<foo>/name is
authorSteven Hand <steven@xensource.com>
Thu, 24 Aug 2006 13:07:01 +0000 (14:07 +0100)
committerSteven Hand <steven@xensource.com>
Thu, 24 Aug 2006 13:07:01 +0000 (14:07 +0100)
not present.

Signed-off-by: Steven Hand <steven@xensource.com>
tools/blktap/lib/xs_api.c

index 44abcf20800a1fcf8144b4ba8a9dab4344ef47d8..8dd491a800888208350a45c738903722e940351c 100644 (file)
@@ -180,8 +180,7 @@ char *get_dom_domid(struct xs_handle *h, const char *name)
        
        e = xs_directory(h, xth, "/local/domain", &num);
        
-       i = 0;
-       while (i < num) {
+       for (i = 0; (i < num) && (domid == NULL); i++) {
                asprintf(&path, "/local/domain/%s/name", e[i]);
                val = xs_read(h, xth, path, &len);
                free(path);
@@ -192,12 +191,9 @@ char *get_dom_domid(struct xs_handle *h, const char *name)
                        /* match! */
                        asprintf(&path, "/local/domain/%s/domid", e[i]);
                        domid = xs_read(h, xth, path, &len);
-                       free(val);
                        free(path);
-                       break;
                }
                free(val);
-               i++;
        }
        xs_transaction_end(h, xth, 0);